大学课程用树莓派代替教科书

还没有读者喜欢这个。
Raspberry Pi used at SUNY Albany

Opensource.com

纽约州立大学奥尔巴尼分校21 世纪的信息 课程中,树莓派 已取代了教科书。

Ethan Sprissler 是这门 900 名学生课程(分为两个部分,分别为 400 名和 500 名学生)的讲师。他使用树莓派代替传统的教科书,目的是:

 

  • 揭秘硬件。

(参见:克拉克三定律

  • 培养熟悉度。

使学生熟悉甚至低级别的电子和工程技术,培养熟悉度并提高 Linux/Unix 的普及度。

  • 降低风险。

提供一个低成本、低风险的平台,为学生提供创新工具和基础。

首先,学生观看 此演示文稿,以了解使用树莓派是多么容易。他们学习如何

Raspberry Pi and its camera

摄像头的初始设置非常顺利,按照 此处的说明此处的叙述 完成。所有示例都侧重于揭秘技术,并向学生展示使用他们触手可及的工具可以完成一些非常酷的事情。Python 示例的源代码 可在 Github 上获取

您可以自由使用和传递此演示文稿(使用 Reveal.js此处提供 创建);它可以在 GitHub 上进行 fork 或克隆

标签
User profile image.
Luis Ibáñez 在芝加哥的 Google Inc 担任高级软件工程师。

16 条评论

<em>使用一行 Python 代码运行 Web 服务器。</em>

嗯... 看起来他们是用一行 <code>bash</code>(或他们正在使用的任何 shell)<em>启动</em> Web 服务器,但服务器本身不仅仅是一行 Python 代码。

还是我只是在吹毛求疵?

Pat,

是的,您的澄清是正确的。

这确实是一行“bash”代码,它调用了一个用 Python 编写的完整模块,而该模块又运行一个 Web 服务器。

从大局来看,将功劳归于 Python 提供该功能,而不是仅仅因为 Bash 调用了酷炫的 Python 功能而将功劳归于 Bash,似乎仍然是公平的。

完整的 Python 等效代码在此幻灯片中
http://www.opensourcesoftwarepractice.org/Raspberry-Pi-Web-Server-With-Python/#/13

大约是 4 行可读的 Python 代码,

import SimpleHTTPServer, SocketServer
handler = SimpleHTTPServer.SimpleHTTPRequestHandler
server = SocketServer.TCPServer(("",8000),handler)
server.serve_forever()

并且可以压缩成两行“不太可读”的代码

import SimpleHTTPServer, SocketServer
SocketServer.TCPServer(("",8000),SimpleHTTPServer.SimpleHTTPRequestHandler).serve_forever()

我们宁愿让学生习惯编写可读的代码...

这比 Node.js 中的等效代码在大小上略胜一筹
https://#/blog/home/post/433

总的来说,对于本课程的目的,此练习的重点是向学生展示与他们可以互动的事物“真的很容易”做到。

树莓派的目标是揭秘计算,并创建一个环境,让学生可以在过程中快速实验并获得乐趣。

是的。你是。

不,你不是,是的,我同意。但即使 Python 中嵌入了整个 Web 服务器,我也很难称其为“单行 Web 服务器”。

Hans,

是的.... 但是.... :-)

我仍然认为它应该被称为“单行服务器”
https://linuxjournal.cn/content/tech-tip-really-simple-http-server-python

您说得对,实际上,此模块位于数百行 Python 代码之上,而 Python 代码又位于数千行 C 代码之上,这些代码共同实现了所有神奇的功能。

但是,从登录到该树莓派(或任何运行 Python 的 Linux 系统)的用户的角度来看,事实仍然是:通过键入一行命令,她/他设法启动了一个 Web 服务器。

这归功于 Python 提供了 SimpleHTTPServer 模块,
https://docs.pythonlang.cn/2/library/simplehttpserver.html,
并提供了“-m”选项来直接启动模块。

没有人说它是一行 Web 服务器。

如果我是一名学生,我对白盒 nweb 服务器 (http://www.ibm.com/developerworks/systems/library/es-nweb/index.html) 的兴趣会远高于黑盒 Python 模块。为什么?因为前者是一个简单但易于理解的 Web 服务器。如果我理解了它,我就可以在任何我喜欢的方向上扩展它,而不是受 Python 提供给我的任何东西的束缚。它澄清了事物,而不是神秘化事物。我不是仅仅应用技术,而是创造技术。这才是真正的教育——培养架构师而不是消费者。

Hans,

感谢您向我们介绍 nweb。
它是一个非常出色且紧凑的系统。

nweb 的配套网页教程也制作精良。

我期待在我们在纽约州立大学奥尔巴尼分校刚刚启动的学生驱动的 HackSpace 的培训课程中使用它。

我认为两者都成立:对于刚接触“编程”或“黑客技术”的学生来说,“一行”python/bash 服务器更适合,因为它使他们可以轻松地启动一些东西,这将会/可能会激发他们学习更多知识的欲望。
一旦他们到了那个阶段,nweb 服务器可能是更好的选择。但是如果他们刚开始,向他们抛出 200 行 C 代码会让他们感到不知所措,他们中的大多数人会因为太多而直接放弃。

嗨,Luis!

很高兴我能帮到您!这就是评论员的用途 ;-)
请注意,nweb 也具有 RasPi 版本(二进制文件),因此您已准备就绪。

Luis,

您是否使用了特定的镜像来为学生部署 RPi?

这个镜像可以在哪里找到?

问候
Arjen
荷兰。

Arjen,

这是使用 Raspbian Debian 发行版完成的。

命令

cat /etc/debian_release

返回

wheezy/sid

镜像可在此处下载
http://www.element14.com/community/community/raspberry-pi#downloadcenter

摄像头配置是按照以下说明完成的
http://www.raspberrypi.org/camera

最佳

Luis

我不得不赞同 Hans 的观点。
我非常喜欢我的第一位编程老师,因为她教会了我们如何思考代码。这不是“我加载哪个库来获取执行 X 操作的模块”的问题

而是我如何编写一个执行 X 操作的模块的问题。(老实说,我们甚至在后来才学到模块这个术语。)

这些天我没有做很多编程,但我仍然喜欢控制代码及其功能的概念。如果我使用别人的库和模块(我们都这样做)。总会感觉少了些个人色彩,感觉它不完全是“我的”。

作为一名 C/C++ 程序员,我当然赞同应该了解较低级别发生的事情的观点。

但是,在教育和编程中,拥有多层抽象都有其价值。

只要我们不阻止开发人员在他们变得更加好奇时能够深入研究代码,提供更高的概念抽象就无害。

我们可以逐步推进

从:Python 模块中的 Web 服务器

到:由三个 Python 类实现的 Web 服务器,调用大约五个函数,所有函数都来自之前的模块。

到:C 实现,(在 nweb 的情况下)调用三个 C 函数 { log(), web(), main() },

到:检查 nweb 函数反过来调用其他八个 C 函数 { getenv(), chdir(), setpgrp(), signal(), open(), read(), write() 和 close() }。

我完全同意,通过使用较低级别的方法,学生将更接近于理解事物的运作方式。但是,为了充分理解,他们应该更进一步研究进程和进程间通信(以理解 signal() 和 fork() 的意义),并理解文件系统和管道(以理解 chdir()、open()、close()、read()、write() 的意义)... 按照这个逻辑,我们可能还应该深入研究内核代码下这些函数的源代码实现,以真正了解它们是如何工作的......,然后我们必须了解驱动程序......,并且可能引入一些汇编代码,并在电子学方面有所了解...

当然,这就是树莓派的设计目的。问题是如何逐步实现,而不会产生抵触情绪。

讲师的挑战是:如何创造条件来激励学生进一步深入研究这些主题?

一个好的选择是远离讲座,并通过学生与编程平台的直接互动来触发对较低级别的学习。

这也是促使我们在纽约州立大学奥尔巴尼分校创建一个 HackSpace 的原因之一。旨在创造一个非正式的环境,让学生可以按照自己的节奏,并在自身好奇心的驱动下,更深入地探索。这消除了时间、课程主题和共同位置的人为限制,这些限制使得学生很难在他们准备好时逐步探索主题。

纽约州奥尔巴尼的水里一定有什么东西。锡耶纳学院物理学教授 Michele McColgan 博士 一直在本科生课堂上以及更大的夏令营和“城市学者”项目中,使用树莓派(以及其他几种富有创意的动手工具)进行教学。

McColgan 博士是一位鼓舞人心且充满活力的教育家,正是 STEM、开源、创客运动、科技女性所需要的。写一篇关于她和她的努力的文章怎么样?

Patrick,

非常感谢您的分享。

看到 McColgan 博士正在做的事情非常有趣。

写一篇关于她和她的工作的文章是个绝妙的主意。
我刚刚与她取得了联系(感谢您提供的联系方式)。

我期待从她的经验中学习更多,并在此处以文章或访谈的形式分享。

谢谢

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 3.0 Unported License 获得许可。
© . All rights reserved.